package main.java.sq;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;


public class ColoniaMinera extends Selecciones implements Accion {
	private int idJugador;
	private boolean amarilla;
	private boolean roja;
	private boolean valla;
	public ColoniaMinera(){
		idJugador=-1;
		valla=false;
	}
	@Override
	public void ejecutarAccion() {
		System.out.println("ColoniaMinera\r\n");
		//ya sabemos que tiene nave, ahora tenmos que obtener los planetas donde estan
		Partida partida=Partida.getPartida();
		Jugador jugadorprin=partida.getJugadorPorId(idJugador);
		List<Nave> carguerosYDestructores= new ArrayList<Nave>();
		carguerosYDestructores.addAll(jugadorprin.tieneNave(TipoNave.Carguero));
		carguerosYDestructores.addAll(jugadorprin.tieneNave(TipoNave.Destructor));
		List<Planeta> planetasConNaves=new ArrayList<Planeta>();
		Iterator<Nave> recorrernaves=carguerosYDestructores.iterator();
		while(recorrernaves.hasNext()){
			planetasConNaves.add(recorrernaves.next().getPlaneta());
		}
		//Ya tenemos los planetas, pedimos al usuario que escoja el planeta del cual quiere recoger los minerales	
		Planeta planeta= seleccionaSector(planetasConNaves);
		List<Minerales>minerales=planeta.getMinerales();
		if((minerales.size()+jugadorprin.getHangar().getMinerales().size())>10){
			int i=0;
			while(jugadorprin.getHangar().getMinerales().size()<10){
				jugadorprin.getHangar().addMineral(minerales.get(i));
				i++;
			}
			
		}else{
		jugadorprin.getHangar().addConjuntoMinerales(minerales);
		}
		

	}
	
	@Override
	public int getIdJugador() {
		return idJugador;
	}
	@Override
	public void setIdJugador(int idJugador) {
		this.idJugador=idJugador;
		
	}

	
	
	public String toString(){
		return "ColoniaMinera";
	}

	@Override
	public boolean getAmarilla() {
		return this.amarilla;
	}

	@Override
	public boolean getRoja() {
		return this.roja;
	}

	@Override
	public boolean getTieneConsul() {
		return this.getIdJugador()>0;
	}

	@Override
	public void setAmarilla(boolean amarilla) {
		this.amarilla = amarilla;

	}

	@Override
	public void setRoja(boolean roja) {
		this.roja = roja;

	}

	@Override
	public boolean esRealizable() {
		//Solo se puede realizar si tiene en juego un carguero o destructor y si no tiene 10 minerales
		Partida p=Partida.getPartida();
		Jugador jugadorprin=p.getJugadorPorId(idJugador);
		boolean tieneNaves=false;
		boolean maxMinerales=false;
		boolean realizable=false;
		if(jugadorprin.tieneNave(TipoNave.Carguero).size()>0 || jugadorprin.tieneNave(TipoNave.Destructor).size()>0){
			tieneNaves=true;
		}
		if(jugadorprin.getHangar().getMinerales().size()>=10){
			maxMinerales=true;
		}
		if(tieneNaves && !maxMinerales){
			realizable=true;
		}
		return realizable;
	}

		
		/**
		 */
		public Planeta seleccionaSector(List<Planeta> lp){
	
		return super.seleccionaSector(lp); }
		@Override
		public boolean getValla() {
			return valla;
		}
		@Override
		public void setValla(boolean valla) {
			this.valla=valla;
			
		}

}
